Computer virtualization techniques provide a rich set of networking capabilities that integrate well with sophisticated enterprise networks. Virtual networking allows users to network virtual machines in the same manner as physical machines. Thus, users can build complex networks within a single physical server host or across multiple server hosts. Virtual switches allow virtual machines on the same server host to communicate with each other using the same protocols used over physical switches, without the need for additional networking hardware. Further, virtual switches support virtual LANs (VLANs) that are compatible with standard VLAN implementations from a variety of networking and virtualization vendors. A virtual machine can be configured with one or more virtual Ethernet adapters (vNIC), each of which each has its own MAC address. As a result, virtual machines have properties similar to those of physical machines, from a networking standpoint. In addition, virtual networks enable functionality not possible with physical networks.
Thus, virtual server environments use software based virtual switches inside a virtual server to enable communication among the virtual machines (VM) as well as between VMs and the outside world. The virtual switches are typically designed to not introduce loops in the network. They achieve this result without using a spanning-tree protocol; instead virtual switches use a combination of pinning VMs to a given physical NIC (MAC pinning) and a distance vector logic whereby a frame received by a virtual switch coming from outside into the physical server is not forwarded back to another physical NIC. This approach, however, assumes that the VMs operate as a computing node or an end-point destination and not as a networking node (e.g., a firewall or other networking appliance).